#include "../../framework/inc/xDxApp.h"
#include "../inc/xMatrix.h"
namespace Sky
{
	

	xMatrix& xMatrix::Translate( TFloat x,TFloat y,TFloat z )
	{
		D3DXMATRIX	matTrans;
		D3DXMatrixTranslation(&matTrans,x,y,z);
		D3DXMatrixMultiply(this,&matTrans,this);
		return *this;
	}

	xMatrix::xMatrix()
	{
		D3DXMatrixIdentity(this);
	}

	xMatrix& xMatrix::Scale( TFloat x,TFloat y,TFloat z )
	{
		D3DXMATRIX	matScale;
		D3DXMatrixScaling(&matScale,x,y,z);
		D3DXMatrixMultiply(this,this,&matScale);
		return *this;
	}

	xMatrix& xMatrix::RotateX( TFloat radian )
	{
		D3DXMATRIX matRotate;
		D3DXMatrixRotationX(&matRotate,radian);
		D3DXMatrixMultiply(this,&matRotate,this);
		return *this;
	}

	xMatrix& xMatrix::RotateY( TFloat radian )
	{
		D3DXMATRIX matRotate;
		D3DXMatrixRotationY(&matRotate,radian);
		D3DXMatrixMultiply(this,&matRotate,this);
		return *this;
	}

	xMatrix& xMatrix::RotateZ( TFloat radian )
	{
		D3DXMATRIX matRotate;
		D3DXMatrixRotationZ(&matRotate,radian);
		D3DXMatrixMultiply(this,&matRotate,this);
		return *this;
	}

	xMatrix& xMatrix::RotateAxis( xVector3* axis,TFloat radian)
	{
		D3DXMATRIX matRotate;
		D3DXMatrixRotationAxis(&matRotate,axis,radian);
		D3DXMatrixMultiply(this,&matRotate,this);
		return *this;
	}
}